export default {
  namespaced: true,
  state: {
    //是否显示提示框
    isShowToast: false,
    // 提示信息
    toastMsg: "",
    // 提示类型 success warning  danger
    toastType: "",
  },
  mutations: {
    //修改是否显示提示框状态
    changeIsShowToast(state, payload) {
      // console.log("isShowToast提示窗口同步", payload);
      state.isShowToast = payload.isShow;
      //如果传入的是显示提示框，则给toastMsg和toastType赋值
      if (payload.isShow) {
        state.toastMsg = payload.msg;
        state.toastType = payload.type;
      }
    },
  },
  //   Toast组件应该具备自动关闭的功能，而不是每次调用都要写一段定时器代码来关闭，这里写入actions异步方法
  actions: {
    asyncIsShowToast(context, payload) {
      // context等于commit+state
      // console.log("asyncIsShowToast提示窗口异步", payload);
      // 基于mutations方法
      context.commit("changeIsShowToast", {
        isShow: true,
        msg: payload.msg,
        type: payload.type,
      });
      // 定时器自动关闭方法
      // setTimeout(() => {
      //     this.changeIsShowToast({
      //       isShow: false,
      //     });
      //   }, 1500);
      setTimeout(() => {
        context.commit("changeIsShowToast", { isShow: false });
      }, 1500);
    },
  },
};

/* 
提示信息
    灵活展示提示内容和图标
    
    步骤
    1.vuex中 存储 提示的所有信息和图标
    2.vuex中提供修改信息和图标的 方法
    3.Toast中显示vux中的提示消息和类型
    4.Login.vue调用时，传入提示信息和提示类型


*/
